carmelo (Normal User)
Pro
Messaggi: 100
Iscritto: 15/06/2007
|
ciao a tutti,
vorrei far apparire l'applicazione solo nella trybar e non nella barra delle applicazioni.
In delphi utilizzavo
Codice sorgente - presumibilmente Plain Text |
ShowWindow(Application.Handle, SW_HIDE);
|
oltre al componente tryicon, ma "handle" non mi funziona con lazarus...
Avete dei suggerimenti?
Grazie tante
Carmelo
|
|
Goblin (Member)
Expert
Messaggi: 375
Iscritto: 02/02/2011
|
se sei nel mainform elimina application e usa solo Handle
Ibis redibis non morieris in bello |
|
carmelo (Normal User)
Pro
Messaggi: 100
Iscritto: 15/06/2007
|
Postato originariamente da Goblin:
se sei nel mainform elimina application e usa solo Handle |
cosi facendo mi nasconde tutto ma rimane l'icona nella barra delle applicazioni.
Fa proprio l'inverso che vorrei... |
|
giacomopaty (Normal User)
Rookie
Messaggi: 53
Iscritto: 17/10/2011
|
Postato originariamente da carmelo:
ciao a tutti,
vorrei far apparire l'applicazione solo nella trybar e non nella barra delle applicazioni.
In delphi utilizzavo
Codice sorgente - presumibilmente Plain Text |
ShowWindow(Application.Handle, SW_HIDE);
|
oltre al componente tryicon, ma "handle" non mi funziona con lazarus...
Avete dei suggerimenti?
Grazie tante
Carmelo |
Ultima modifica effettuata da giacomopaty il 07/12/2012 alle 23:22 |
|
Goblin (Member)
Expert
Messaggi: 375
Iscritto: 02/02/2011
|
mmm ho fatto una prova al volo ...
nel file di progetto devi settare la proprietà dell'application MainFormOnTaskbar a true.
io ho provato a settarlo nel create del form main, ma credo che il posto giusto sia nel file .lpr l'analogo del .dpr di delphi
la riga da aggiungere é:
Application.MainFormOnTaskbar := true;
e ovviamente la property visible del componente tryicon deve essere a True.
ho fatto una prova al volo e sembra funzionare
Ibis redibis non morieris in bello |
|
carmelo (Normal User)
Pro
Messaggi: 100
Iscritto: 15/06/2007
|
Grazie per i suggermenti ma, programmo per hobby e sono un sostenitore del opensource ;-)
Postato originariamente da Goblin:
....ho fatto una prova al volo e sembra funzionare |
Dopo averle provate tutte, a me invece continua a non funzionare...
se posto un po di codice risolviamo?
tanks
|
|
Goblin (Member)
Expert
Messaggi: 375
Iscritto: 02/02/2011
|
yes posta il codice, male che vada qualchuno più bravo di me ti risolve il problema
Ibis redibis non morieris in bello |
|
carmelo (Normal User)
Pro
Messaggi: 100
Iscritto: 15/06/2007
|
Codice sorgente - presumibilmente Delphi |
unit Unit1; {$mode objfpc}{$H+} interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Menus; type { TForm1 } TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Memo1: TMemo; MenuItem1: TMenuItem; MenuItem2: TMenuItem; MenuItem4: TMenuItem; PopupMenu1: TPopupMenu; Timer1: TTimer; TrayIcon1: TTrayIcon; procedure FormCreate(Sender: TObject); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Label2Click(Sender: TObject); procedure Label3Click(Sender: TObject); procedure Memo1Change(Sender: TObject); procedure MenuItem1Click(Sender: TObject); procedure MenuItem2Click(Sender: TObject); procedure MenuItem4Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; SendMessage(Form1.Handle, WM_SYSCOMMAND, $F012, 0); end; procedure TForm1.FormCreate(Sender: TObject); begin memo1.Lines.LoadFromFile('c:/C_memo_note.txt'); form1.Top:= 10; form1.Left:=screen.Width - form1.Width - 10; end; procedure TForm1.Label2Click(Sender: TObject); begin form1.Hide; end; procedure TForm1.Label3Click(Sender: TObject); begin close; end; procedure TForm1.Memo1Change(Sender: TObject); begin Timer1.Enabled := false; Timer1.Enabled := True; end; procedure TForm1.MenuItem1Click(Sender: TObject); begin form1.show; end; procedure TForm1.MenuItem2Click(Sender: TObject); begin Form1.Hide; end; procedure TForm1.MenuItem4Click(Sender: TObject); begin close; end; procedure TForm1.Timer1Timer(Sender: TObject); begin timer1.Enabled:=false; memo1.Lines.SaveToFile('c:\C_memo_note.txt'); end; end.
|
Manca il codice che mi avete consigliato di mettere proprio perche non funziona quindi l'ho omesso...
grazie ancora
Ultima modifica effettuata da carmelo il 10/12/2012 alle 20:15 |
|
Goblin (Member)
Expert
Messaggi: 375
Iscritto: 02/02/2011
|
Allora io ho fatto così:
Tenendo come base il tuo codice
1) devi caricare l'icona del programma nel componente Trayicon
2) collegare il menuitem al componente trayicon
3) di seguito la modifica al codice
Codice sorgente - presumibilmente Delphi |
procedure TForm1.FormCreate(Sender: TObject); begin Application.MainFormOnTaskbar := true; // riga aggiunta memo1.Lines.LoadFromFile('c:\temp\install.bat'); form1.Top:= 10; form1.Left:=screen.Width - form1.Width - 10; end; procedure TForm1.Label2Click(Sender: TObject); begin ShowWindow(Handle, SW_HIDE); TrayIcon1.visible := True; end; procedure TForm1.MenuItem1Click(Sender: TObject); begin ShowWindow(Handle, SW_SHOW); TrayIcon1.visible := False; end; procedure TForm1.MenuItem2Click(Sender: TObject); begin ShowWindow(Handle, SW_HIDE); TrayIcon1.visible := True; end;
|
Ibis redibis non morieris in bello |
|